package com.springboot.jdk.pool;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * CachedTheadPool 案例实战
 *
 * @author: zr
 * @date: 2021-10-17
 */
public class CachedThreadPoolDemo {

    public static void main(String[] args) {
        // 线程池管理器
        // 不限制线程的数量
        //你无论提交多少个任务，都会直接开辟一个新的线程来执行你的任务
        // 非常是短时间突然大量的涌入大量任务的场景
        // 你的大量的线程如果之后空闲了，没有任务了，达到一定时间之后，就会自动释放掉
        //任务处理完了，线程就空闲了，接下来会怎么样呢？
        ExecutorService executorService = Executors.newCachedThreadPool();
        // 10个任务，就通过3个线程来执行
        for (int i = 0; i < 10; i++) {
            executorService.execute(new Runnable() {
                @Override
                public void run() {
                    System.out.println(Thread.currentThread() + ":" + "线程池异步执行任务");
                }
            });
        }
    }
}
